To write and to read data to a smart card or to execute a command on a smart card, it is necessary to use a connection with the card. The connection with the smart card is made by using a reader. Readers of the same manufacturer use some software support (driver) for communication with programs by using a standard reader API (Programming Interface) preferably. In this case user can replace one reader with another compatible reader without changing code of the program.
However, many of the programming interfaces of the readers (driver) currently available are not fully standardized. Thus readers of different or the same manufacturers may be present concurrently at the same system for different programs. Furthermore, there are use restrictions of certain types of smart cards per reader or for security relevant programs in which the use of more than one card in one session is prohibited.
If several readers are installed on one system, the user is not able to select the right reader when a program requests to insert a smart card. Furthermore, if additional readers are installed after set up of the programs, the access priority of the installed readers may be changed. This may cause errors of the programs or could confuse the user when asked to insert a smart card into a reader. If several readers with different drivers share a logical I/O port, errors may occur depending on which reader is actually connected and powered on. Readers reserved for security relevant programs (e.g. used for user identification and authentication at system start) may be accessible for other programs which may cause the disruption of system services when a reader is locked by another reader or if the smart card having sensitive information is removed. This restricts the use of systems in which several parallel running programs having access to different readers having standard or nonstandard reader API.
U.S. Pat. No. 3,810,105 discloses a computer input-output system in which peripheral devices (e.g. readers) cooperate with hardware input-output processors independent from the central processor of the computer for handling the transfer of data between peripheral devices. Signal communication runs through special transmission facilities which include separate communication paths for the input-output processors, separate communication paths for control and data signals, and separate communication paths for determining priority of operations among several input-output processors and the CPU at memory. The devices are controlled by device controller including subcontrollers which together with a portion of the input-output processors provides a communication interface configuration between devices and input-output processors. There is no teaching or suggestion in that patent how readers may be accessed by user defined access conditions.